home *** CD-ROM | disk | FTP | other *** search
- /*
- ==============================================================================
- WordUp Graphics Toolkit Version 5.0
- Demonstration Program 57
-
- This program uses the scrolling library to demonstrate some of the
- possible configurations of the scrolling windows.
-
- *** PROJECT ***
- This program requires the files WGT5_WC.LIB and WSCR_WC.LIB to be linked.
-
- *** DATA FILES ***
- TEST1-TEST4.SPR, TEST1-TEST4.WMP
- WATCOM C++ VERSION
- ==============================================================================
- */
-
- #include <dos.h>
- #include <wgt5.h>
- #include <wgtscrol.h>
-
-
- /* Keyboard control codes */
- #define LEFT 75
- #define RIGHT 77
- #define UP 72
- #define DOWN 80
- #define ESC 1
-
- #define NUM_TILES 5
-
- block tiles0[NUM_TILES+1]; /* 4 block array to hold our sets of tiles */
- block tiles1[NUM_TILES+1];
- block tiles2[NUM_TILES+1];
- block tiles3[NUM_TILES+1];
-
- short tiletypes0[256]; /* Tile types for each window */
- short tiletypes1[256];
- short tiletypes2[256];
- short tiletypes3[256];
-
- scrollsprite wobject[5]; /* No objects are used in this demo, but a
- scrollsprite structure is needed to load
- the map. */
-
- short window_on[4];
- block sprites[5];
- wgtmap map0, map1, map2, map3;
-
- short setup;
-
- short oldmode; /* Previous graphics mode */
- color pal[256]; /* A common palette for all sprites/tiles */
- short xsize[4], ysize[4]; /* The size of the tiles in our map */
- char c;
- int timer;
- short movex, movey;
-
- void loadsprites (void);
- void loadmaps (void);
- void find_tile_sizes (void);
- void start_scroll (void);
- void close_files (void);
-
-
- void timerctr (void)
- {
- timer++;
- }
-
-
- void main (void)
- {
- int frames = 0;
-
- oldmode = wgetmode ();
-
- printf ("WGT v5.0 Scrolling Possibilities Demo\n");
- printf ("This demo is meant to show the versatility of WGT's scrolling\n");
- printf ("library. It does not show all of the possible scrolling combinations\n");
- printf ("but it gives you some setups that you can base a game around.\n\n");
- printf ("The WGT v5.0 for Watcom system allows up to 50 maps used in any\n");
- printf ("combination of normal and parallax layers. This demo does not\n");
- printf ("make any attempt to illustrate these possibilities (or artwork :)\n\n");
- printf ("Choose your scrolling setup:\n\n");
- printf ("[0] 4 windows\n");
- printf ("[1] 1 window, 1 scrolling level\n");
- printf ("[2] 1 window, 2 scrolling levels\n");
- printf ("[3] 1 window, 3 scrolling levels\n");
- printf ("[4] 1 window, 4 scrolling levels\n");
- printf ("[5] 2 windows, 1 scrolling level, vertical\n");
- printf ("[6] 2 windows, 2 scrolling levels, vertical\n");
- printf ("[7] 2 windows, 1 scrolling level, horizontal\n");
- printf ("[8] 2 windows, 2 scrolling levels, horizontal\n");
- printf ("[9] 2 windows, 1 with 3 levels, the other with 1 level\n");
-
- printf ("Enter your setup:");
- scanf ("%i", &setup);
-
- vga256 ();
-
- loadsprites ();
- find_tile_sizes ();
-
- start_scroll ();
- loadmaps ();
-
- installkbd ();
- timer = 0;
- winittimer ();
- wstarttimer (timerctr, TICKS(100));
- do {
- movex = 0;
- movey = 0;
-
- if (kbdon[UP])
- movey = -16;
- if (kbdon[DOWN])
- movey = 16;
- if (kbdon[LEFT])
- movex = -16;
- if (kbdon[RIGHT])
- movex = 16;
-
- if (window_on[0])
- wscrollwindow (0, movex * 1 / 4, movey * 1 / 4);
- if (window_on[1])
- wscrollwindow (1, movex * 2 / 4, movey * 2 / 4);
- if (window_on[2])
- wscrollwindow (2, movex * 3 / 4, movey * 3 / 4);
- if (window_on[3])
- wscrollwindow (3, movex, movey);
-
- // wretrace ();
- switch (setup)
- {
- case 0: wputblock (0, 0, scrollblock[0], NORMAL);
- wputblock (128, 0, scrollblock[1], NORMAL);
- wputblock (0, 100, scrollblock[2], NORMAL);
- wputblock (128, 100, scrollblock[3], NORMAL);
- break;
- case 1:
- case 2:
- case 3:
- case 4: wputblock (0, 0, scrollblock[0], NORMAL);
- break;
- case 5:
- case 6: wputblock (0, 0, scrollblock[0], NORMAL);
- wputblock (128, 0, scrollblock[1], NORMAL);
- break;
- case 7:
- case 8: wputblock (0, 0, scrollblock[0], NORMAL);
- wputblock (0, 100, scrollblock[1], NORMAL);
- break;
- case 9: wputblock (0, 0, scrollblock[0], NORMAL);
- wputblock (128, 0, scrollblock[3], NORMAL);
- break;
- }
- frames++;
- } while (!kbdon[ESC]); /* Until ESC is hit */
- wstoptimer ();
- wdonetimer ();
- uninstallkbd ();
- close_files ();
-
- wsetmode (oldmode);
- printf ("Number of Frames: %i\n", frames);
- printf ("Time elapsed: %7.2f seconds\n", (float)(timer) / 100.0);
- printf ("Frame Rate: %f\n", (float)frames / ((float)(timer) / 100.0));
- }
-
-
- void loadsprites (void)
- {
- wloadsprites (pal, "test1.spr", tiles0, 1, NUM_TILES);
- wloadsprites (pal, "test2.spr", tiles1, 1, NUM_TILES);
- wloadsprites (pal, "test3.spr", tiles2, 1, NUM_TILES);
- wloadsprites (pal, "test4.spr", tiles3, 1, NUM_TILES);
- wsetpalette (0, 255, pal);
- }
-
-
- void loadmaps (void)
- {
- map0 = wloadmap (0, "test4.wmp", tiletypes0, wobject);
- map1 = wloadmap (1, "test3.wmp", tiletypes1, wobject);
- map2 = wloadmap (2, "test2.wmp", tiletypes2, wobject);
- map3 = wloadmap (3, "test1.wmp", tiletypes3, wobject);
-
- /* If the tilewidth is not 0, the window must have been initialized
- above, so start viewing it at the top left of the map. */
- if (tilewidth[0] > 0)
- {
- wshowwindow (0, 0, 0);
- window_on[0] = 1;
- }
- if (tilewidth[1] > 0)
- {
- wshowwindow (1, 0, 0);
- window_on[1] = 1;
- }
- if (tilewidth[2] > 0)
- {
- wshowwindow (2, 0, 0);
- window_on[2] = 1;
- }
- if (tilewidth[3] > 0)
- {
- wshowwindow (3, 0, 0);
- window_on[3] = 1;
- }
- }
-
-
- void find_tile_sizes (void)
- {
- xsize[0] = wgetblockwidth (tiles0[1]);
- ysize[0] = wgetblockheight (tiles0[1]);
-
- xsize[1] = wgetblockwidth (tiles1[2]);
- ysize[1] = wgetblockheight (tiles1[2]);
-
- xsize[2] = wgetblockwidth (tiles2[1]);
- ysize[2] = wgetblockheight (tiles2[1]);
-
- xsize[3] = wgetblockwidth (tiles3[1]);
- ysize[3] = wgetblockheight (tiles3[1]);
- }
-
-
- void start_scroll (void)
- {
- switch (setup)
- {
- case 0: winitscroll (0, NORMAL, -1, 128 / xsize[2], 96 / ysize[2], tiles2);
- winitscroll (1, NORMAL, -1, 128 / xsize[1], 96 / ysize[1], tiles1);
- winitscroll (2, NORMAL, -1, 128 / xsize[2], 96 / ysize[2], tiles2);
- winitscroll (3, NORMAL, -1, 128 / xsize[3], 96 / ysize[3], tiles3); break;
- case 1: winitscroll (0, NORMAL, -1, 320 / xsize[3], 192 / ysize[3], tiles3); break;
- case 2: winitscroll (0, NORMAL, -1, 320 / xsize[3], 192 / ysize[3], tiles3);
- winitscroll (1, PARALLAX, 0, 320 / xsize[1], 192 / ysize[1], tiles1); break;
- case 3: winitscroll (0, NORMAL, -1, 256 / xsize[0], 192 / ysize[0], tiles0);
- winitscroll (1, PARALLAX, 0, 256 / xsize[1], 192 / ysize[1], tiles1);
- winitscroll (2, PARALLAX, 0, 256 / xsize[2], 192 / ysize[2], tiles2); break;
- case 4: winitscroll (0, NORMAL, -1, 256 / xsize[0], 192 / ysize[0], tiles0);
- winitscroll (1, PARALLAX, 0, 256 / xsize[2], 192 / ysize[2], tiles2);
- winitscroll (2, PARALLAX, 0, 256 / xsize[1], 192 / ysize[1], tiles1);
- winitscroll (3, PARALLAX, 0, 256 / xsize[3], 192 / ysize[3], tiles3); break;
- case 5: winitscroll (0, NORMAL, -1, 128 / xsize[0], 192 / ysize[0], tiles0);
- winitscroll (1, NORMAL, -1, 128 / xsize[1], 192 / ysize[1], tiles1); break;
- case 6: winitscroll (0, NORMAL, -1, 128 / xsize[0], 192 / ysize[0], tiles0);
- winitscroll (1, NORMAL, -1, 128 / xsize[1], 192 / ysize[1], tiles1);
- winitscroll (2, PARALLAX, 0, 128 / xsize[2], 192 / ysize[2], tiles2);
- winitscroll (3, PARALLAX, 1, 128 / xsize[3], 192 / ysize[3], tiles3); break;
- case 7: winitscroll (0, NORMAL, -1, 320 / xsize[2], 96 / ysize[2], tiles2);
- winitscroll (1, NORMAL, -1, 320 / xsize[1], 96 / ysize[1], tiles1); break;
- case 8: winitscroll (0, NORMAL, -1, 320 / xsize[2], 96 / ysize[2], tiles2);
- winitscroll (1, NORMAL, -1, 320 / xsize[1], 96 / ysize[1], tiles1);
- winitscroll (2, PARALLAX, 0, 320 / xsize[2], 96 / ysize[2], tiles2);
- winitscroll (3, PARALLAX, 1, 320 / xsize[3], 96 / ysize[3], tiles3); break;
- case 9: winitscroll (0, NORMAL, -1, 128 / xsize[2], 192 / ysize[2], tiles2);
- winitscroll (1, PARALLAX, 0, 128 / xsize[1], 192 / ysize[1], tiles1);
- winitscroll (2, PARALLAX, 0, 128 / xsize[3], 192 / ysize[3], tiles3);
- winitscroll (3, NORMAL, -1, 128 / xsize[3], 192 / ysize[3], tiles3); break;
- }
- }
-
-
- void close_files(void)
- {
- wfreemap (map0);
- wfreemap (map1);
- wfreemap (map2);
- wfreemap (map3);
- wendscroll (0);
- wendscroll (1);
- wendscroll (2);
- wendscroll (3);
- }
-
-
-